﻿<html DIR="LTR" xmlns:tool="http://www.microsoft.com/tooltip" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:ddue="http://ddue.schemas.microsoft.com/authoring/2003/5" xmlns:MSHelp="http://msdn.microsoft.com/mshelp">
  <head>
    <META HTTP-EQUIV="Content-Type" CONTENT="text/html; CHARSET=utf-8" />
    <META NAME="save" CONTENT="history" />
    <title>Using Connection Pooling</title>
    
    <link rel="stylesheet" type="text/css" href="../local/Classic.css">
      
    </link>
    
    <script src="../local/script.js">
      
    </script><script src="../local/script_main.js">&amp;nbsp;</script>
  </head>
  <body>
    <!--Topic built:03/05/2009 21:01:45-->

    
    
    
    
    
    
    
    
    
    <div id="header">
      <table width="100%" id="topTable"><tr>
          <td align="left">
            <span id="headerBold">Using Connection Pooling</span>
          </td>
          <td align="right">
            
          </td>
        </tr></table>
      
      
      
    </div>
    <div id="mainSection">
      
        
        
		<font color="DarkGray"> </font> <p /> <p />
	
        <div id="introductionSection" class="section">
    <p>The Microsoft SQL Server JDBC Driver provides support for Java Platform, Enterprise Edition 5 (Java EE 5) connection pooling. The JDBC driver implements the JDBC 3.0 required interfaces to enable the driver to participate in any connection-pooling implementation that is provided by middleware vendors and is JDBC 3.0-compliant. Middleware such as Java EE 5 application servers frequently provides compliant connection-pooling facilities. The JDBC driver will participate in pooled connections in these environments. </p>
    <div style="margin: .5em 1.5em .5em 1.5em"><b>Note: </b>
      Although the JDBC driver supports Java EE 5 connection pooling, it does not provide its own pooling implementation. The driver relies on third-party Java Application Servers to manage the connections.<p />
    </div>
    <p>The classes for the connection pooling implementation are as follows.</p>
    <table width="100%" cellspacing="0" cellpadding="0" border="1" style="background-color: #CCCCCC;"><tr>
          <th>
            Class
          </th>
          <th>
            Implements
          </th>
          <th>
            Description
          </th>
        </tr><tr>
        <td>
          <p>com.microsoft.sqlserver.jdbc.SQLServerXADataSource</p>
        </td>
        <td>
          <p>javax.sql.ConnectionPoolDataSource and javax.sql.XADataSource</p>
        </td>
        <td>
          <p>We recommend that you use the <a href="95fc7b07-2498-4a7e-8f7f-ee0d86b598b4.htm">SQLServerXADataSource</a> class for all your Java EE 5 server needs, because it implements all the JDBC 3.0 pooling and XA interfaces.</p>
        </td>
      </tr><tr>
        <td>
          <p>com.microsoft.sqlserver.jdbc.SQLServerConnectionPoolDataSource</p>
        </td>
        <td>
          <p>javax.sql.ConnectionPoolDataSource</p>
        </td>
        <td>
          <p>This class is a connection factory that enables the Java EE 5 application server to populate its connection pool with physical connections. If the configuration of your Java EE 5 vendor requires a class that implements javax.sql.ConnectionPoolDataSource, specify the class name as <a href="b00e5a90-2af7-4d04-8ef8-256183777dcf.htm">SQLServerConnectionPoolDataSource</a>. We generally recommend that you use the <a href="95fc7b07-2498-4a7e-8f7f-ee0d86b598b4.htm">SQLServerXADataSource</a> class instead, because it implements both pooling and XA interfaces, and has been verified in more Java EE 5 server configurations.</p>
        </td>
      </tr></table>
    <p>JDBC application code should always close connections explicitly to derive the most benefit from pooling. When the application explicitly closes a connection, the pooling implementation can reuse the connection immediately. If the connection is not closed, other applications cannot reuse it. Applications can use the<code> finally </code>construct to make sure that pooled connections are closed even if an exception occurs. </p>
    <div style="margin: .5em 1.5em .5em 1.5em"><b>Note: </b>
      The JDBC driver does not currently call the sp_reset_connection stored procedure when it returns the connection to the pool. Instead, the driver relies on third-party Java Application Servers to return the connections back to their original states.<p />
    </div>
  </div><span id="seeAlsoSpan"><h1 class="heading">See Also</h1></span><div id="seeAlsoSection" class="section" name="collapseableSection"><a href="94bcfbe3-f00e-4774-bda8-bb7577518fec.htm">Connecting to SQL Server with the JDBC Driver</a><br /><br /></div><!--[if gte IE 5]>
			<tool:tip element="seeAlsoToolTip" avoidmouse="false"/><tool:tip element="languageFilterToolTip" avoidmouse="false"/><tool:tip element="roleInfoSpan" avoidmouse="false"/>
		<![endif]-->
      <div id="footer" class="section">
        
		<hr />
		
		<span id="fb" class="feedbackcss">
			
			
		</span>
		
		<a href="9bad553b-9e70-4696-8499-2e35f772a1e0.htm">
			
			© 2009 Microsoft Corporation. All rights reserved.
		</a>
 	
	
      </div>
    </div>
  </body>
</html>